package W328;

/**
 * @author zxc
 * @date 2023/01/15 10:37
 **/

/**
 *  题目 ： 数组元素和 和 数字和的绝对差
 *  题目详述 ：
 *  给你一个正整数数组 nums 。
 * （1）元素和 是 nums 中的所有元素相加求和。
 * （2）数字和 是 nums 中每一个元素的每一数位（重复数位需多次求和）相加求和。
 * （3）返回 元素和 与 数字和 的绝对差。
 * 注意：两个整数 x 和 y 的绝对差定义为 |x - y| 。
 *
 * 提示：
 * 1 <= nums.length <= 2000
 * 1 <= nums[i] <= 2000
 */
public class DifferenceOfSum {
    public int differenceOfSum(int[] nums) {
        // 记录nums数组的元素和
        int arrSum = 0;
        // 记录nusm数组的数字和
        int numberSum = 0;
        // 遍历整个nums数组
        for (int num : nums) {
            // 即，遍历整个nums数组元素的过程中，将nums数组元素值累加都arrSum；
            // ===》 从而能够获取到nums数组中的元素和（即，nums数组中每个元素进行累加）
            arrSum += num;
            // while循环 ：即，若是num不为0的话，即需要将 num%10 累加到numberSum；
            // ===》 从而能够获取到nums数组中的数字和（即，nums数组中每个元素中每个数位进行累加）
            while(num != 0){
                numberSum += (num % 10);
                num /= 10;
            }
        }
        // 返回元素和与数字和之差的绝对值；
        return Math.abs(arrSum - numberSum);
    }
}
